package besteAukera;

import java.awt.Color;
import java.awt.Graphics;
import java.util.Vector;

public class Multiplexorea extends Konbinazionalak {
	private Color kolorea;
	private Vector<Hanka> hankaBektorea=new Vector<Hanka>();
	private Vector<Hanka> sarreraBektorea=new Vector<Hanka>();
	private Hanka s1, s2, i1,s4,s3,s5,s6,s7;
	public Multiplexorea(int x1, int y1, int hankaKop, int sarreraKopMax, String mota) {
		super(x1, y1, hankaKop, sarreraKopMax, mota);
		// TODO Auto-generated constructor stub
		
		if(this.mota=="lau"){
		s1 = new Hanka(x-20, y+20, "positiboa", "s", 0, this, "h");
		s2 = new Hanka(x-20 , y+60 , "positiboa", "s", 1, this, "h");
		i1 = new Hanka(x+60 , y +40, "positiboa", "i", 4, this, "h");
		
		//kontrola
		s3 = new Hanka(x+20 , y+60 , "positiboa", "s", 2, this, "b");
		//Gaikuntza
		s4 = new Hanka(x+20 , y , "negatiboa", "s", 3, this, "b");
		
		lotList[0]=s1;
		lotList[1]=s2;
		lotList[2]=s3;
		lotList[3]=s4;
		lotList[4]=i1;
		}
		if(this.mota=="zortzi"){
			s1 = new Hanka(x-20, y+12, "positiboa", "s", 0, this, "h");
			s2 = new Hanka(x-20 , y+30 , "positiboa", "s", 1, this, "h");
			s3 = new Hanka(x-20 , y+48 , "positiboa", "s", 2, this, "h");
			s4 = new Hanka(x-20 , y+66 , "positiboa", "s", 3, this, "h");
			i1 = new Hanka(x+60 , y +40, "positiboa", "i", 7, this, "h");
			
			//kontrola
			s5 = new Hanka(x+15 , y+65 , "positiboa", "s", 4, this, "b");
			s6 = new Hanka(x+28 , y+53 , "positiboa", "s", 5, this, "b");
			//Gaikuntza
			s7 = new Hanka(x+20 , y , "negatiboa", "s", 6, this, "b");
			
			lotList[0]=s1;
			lotList[1]=s2;
			lotList[2]=s3;
			lotList[3]=s4;
			lotList[4]=s5;
			lotList[5]=s6;
			lotList[6]=s7;
			lotList[7]=i1;
			
		}
	}
	public void dibujate(Graphics g) {

		g.setColor(Color.black);
		//goikoa
		g.drawLine(x, y, x, y+80);
		g.drawLine(x, y, x+40, y+40);
	    g.drawLine(x, y+80, x+40, y+40);
			
	    if(this.mota=="lau"){
	    	s1.dibujate(g);
			s2.dibujate(g);
			
			s4.dibujate(g);
			s3.dibujate(g);
			i1.dibujate(g);
			g.setColor(Color.black);
			g.drawString("2:1", x+10, y+45);
	    }
	    if(this.mota=="zortzi"){
	    
	    	s1.dibujate(g);
			s2.dibujate(g);
			
			s4.dibujate(g);
			s3.dibujate(g);
			i1.dibujate(g);
			s5.dibujate(g);
			s6.dibujate(g);
			s7.dibujate(g);
			g.setColor(Color.black);
			g.drawString("4:1", x+10, y+45);
	    	
	    }
	}
	public boolean estaDentro(int x, int y) {
		if ((x > this.x) && (x < (this.x + 60)) && (y > this.y)
				&& (y < (this.y + 80))) {
			return true;
		}
		return false;

	}
	public void setPosicion(int x1, int y1) {
		this.x = x1;
		this.y = y1;
	}

	public int getX() {
		return x;
	}
	public int getY() {
		return y;
	}
	@Override
	public void funtzioLogikoa(Integer... values) {
		
		// TODO Auto-generated method stub
		if(this.mota=="lau"){
		lotList[4].getIrteera().setBalioa(s4.getSarrera().getBalioa() &((not(s3.getSarrera().getBalioa())& s1.getSarrera().getBalioa())|(s3.getSarrera().getBalioa()& s2.getSarrera().getBalioa())));
		}
		if(this.mota=="zortzi"){
			lotList[7].getIrteera().setBalioa(s7.getSarrera().getBalioa() &((not(s6.getSarrera().getBalioa())&not(s5.getSarrera().getBalioa())& s1.getSarrera().getBalioa())|(not(s6.getSarrera().getBalioa())&s5.getSarrera().getBalioa()& s2.getSarrera().getBalioa())|(s6.getSarrera().getBalioa()&not(s5.getSarrera().getBalioa())& s3.getSarrera().getBalioa())|(s6.getSarrera().getBalioa()&s5.getSarrera().getBalioa()& s4.getSarrera().getBalioa())));
		}
	}
	@Override
	public Vector<Hanka> getHankak() {
		// TODO Auto-generated method stub
		
		if(this.mota=="zortzi"){
		hankaBektorea = new Vector<Hanka>();
		hankaBektorea.addElement(s1);
		hankaBektorea.addElement(s2);
		hankaBektorea.addElement(s3);
		hankaBektorea.addElement(s4);
		hankaBektorea.addElement(s5);
		hankaBektorea.addElement(s6);
		hankaBektorea.addElement(s7);
		hankaBektorea.addElement(i1);
		}
		if(this.mota=="lau"){
			hankaBektorea = new Vector<Hanka>();
			hankaBektorea.addElement(s1);
			hankaBektorea.addElement(s2);
			hankaBektorea.addElement(s3);
			hankaBektorea.addElement(s4);
			
			hankaBektorea.addElement(i1);
			}
		return hankaBektorea;
	}

	@Override
	public Hanka getIrteeraHanka() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Vector<Hanka> getSarreraHankak() {
		// TODO Auto-generated method stub
		if(this.mota=="zortzi"){
		sarreraBektorea=new Vector<Hanka>();
		sarreraBektorea.addElement(s1);
		sarreraBektorea.addElement(s2);
		sarreraBektorea.addElement(s3);
		sarreraBektorea.addElement(s4);
		sarreraBektorea.addElement(s5);
		sarreraBektorea.addElement(s6);
		sarreraBektorea.addElement(s7);
		}
		if(this.mota=="lau"){
			sarreraBektorea=new Vector<Hanka>();
			sarreraBektorea.addElement(s1);
			sarreraBektorea.addElement(s2);
			sarreraBektorea.addElement(s3);
			sarreraBektorea.addElement(s4);
			
			}
		return sarreraBektorea;
	}
public Integer not(Integer sar){
	if (sar==0)
		return 1;
	else return 0;
}
//public void hasieratu() {
//	for (int i = 0; i < this.getHankaKopMax(); i++) {
//		getBalioZuzenak()[i] = false;
//	}
//	if ((this.getLoturenLista()[0].getloturaDu() == false)) {
//		System.out.println("SarreraDatu 0ren balioa"
//				+ this.getLoturenLista()[0].getSarrera().getBalioa());
//		this.getBalioZuzenak()[0] = true;
//		System.out.println("Balioak 0ren balioa" + balioak[0]);
//	}
//
//	if ((this.getLoturenLista()[1].getloturaDu() == false)) {
//		System.out.println("SarreraDatu 1ren balioa"
//				+ this.getLoturenLista()[1].getSarrera().getBalioa());
//		this.getBalioZuzenak()[1] = true;
//		System.out.println("Balioak 0ren balioa" + balioak[1]);
//	}
//	if ((this.getLoturenLista()[2].getloturaDu() == false)) {
//		System.out.println("SarreraDatu 1ren balioa"
//				+ this.getLoturenLista()[1].getSarrera().getBalioa());
//		this.getBalioZuzenak()[2] = true;
//		System.out.println("Balioak 0ren balioa" + balioak[1]);
//		if ((this.getLoturenLista()[3].getloturaDu() == false)) {
//			System.out.println("SarreraDatu 1ren balioa"
//					+ this.getLoturenLista()[1].getSarrera().getBalioa());
//			this.getBalioZuzenak()[3] = true;
//			System.out.println("Balioak 0ren balioa" + balioak[1]);
//		}
//	}
//	
//}

//public synchronized void abixatu() {
//	int i = 0;
//	// Nota:Probatu abixatu eta exekutatu And-ean egiten, horrela txip
//	// bakoitza
//	// berea izango du eta chip-ean hankak sortzen direnez ez da problemarik
//	// egon behar
//	while (lotList.length > i) {
//		int j = 0;
//
//		if (lotList[i] != null)
//			if (lotList[i].getHankaMota() != "s")
//
//				while (lotList[i].getLotLista().size() > j) {
//
//					// irteera truen jarri
//					Chip unekoChip = this.lotList[i].getLotLista().get(j)
//							.getChipa();
//					// abixatu behar den txipa unekochipean gorde
//					int unekoHanka = lotList[i].getLotLista().get(j)
//							.getHankaZenb();
//					if ((unekoChip.getLoturenLista()[unekoHanka]
//							.getloturaDu() == true))
//							unekoChip.lotList[unekoHanka]
//												.getSarrera()
//												.setBalioa(
//														lotList[4].getIrteera().getBalioa());
//					unekoChip.aktibatu(unekoHanka);
//					// Hau aldatu beharko da, bakarrik ate logikoentzako
//					// balio baitu
//					j++;
//				}
//		i++;
//
//	}
//	notifyAll();
//}
}


